/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dao.impl;

import dao.InterfaceParticipanteDAO;
import dao.ProjetoDAOException;
import dao.Conexao;
import model.Participante;
import java.util.List;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author AMOR
 */
public class ParticipanteDAO implements InterfaceParticipanteDAO {

    private Session session;

    @Override
    public void atualizar (Participante participante) throws ProjetoDAOException{
        session = Conexao.getSession();
        Transaction trans = null;
        if (participante == null)
            throw new ProjetoDAOException("Nenhum participante foi informado!");
        else
            try {
                trans = session.beginTransaction();
                session.update(participante);
                trans.commit();
            } catch (HibernateException e) {
                trans.rollback();
                throw new ProjetoDAOException("Erro ao atualizar Participante " + e);
            } finally {
                session.close();
            }
    }

    @Override
    public void excluir (Participante participante) throws ProjetoDAOException{
        session = Conexao.getSession();
        Transaction trans = null;
        if (participante == null)
            throw new ProjetoDAOException("Nenhum Participante foi informado!");
        else
            try {
                trans = session.beginTransaction();
                session.delete(participante);
                trans.commit();
            } catch (HibernateException e){
                trans.rollback();
                throw new ProjetoDAOException("Erro ao excluir Participante " + e);
            } finally {
                session.close();
            }
    }

    @Override
    public void salvar (Participante participante) throws ProjetoDAOException{
        session = Conexao.getSession();
        Transaction trans = null;
        if (participante == null)
            throw new ProjetoDAOException("Nenhum participante foi informado!");
        else
            try {
                trans = session.beginTransaction();
                session.save(participante);
                trans.commit();
            } catch (HibernateException e){
                trans.rollback();
                throw new ProjetoDAOException("Erro ao gravar participante " + e);
            } finally {
                session.close();
            }
    }

    public Participante procurar(String matricula) throws ProjetoDAOException{
        session = Conexao.getSession();
        try{
            Query query = session.createQuery("FROM Participante c WHERE c.matricula = :matricula ")
                                            .setString("matricula", matricula);
            Participante participante = (Participante) query.uniqueResult();
            return participante;
        } catch (HibernateException e){
            throw new ProjetoDAOException("Participante não encontrado " + e);
        } finally {
            session.close();
        }
    }
    
    


    public List listar () throws ProjetoDAOException{
        session = Conexao.getSession();
        try{
            List listParticipante= session.createQuery("FROM Participante").list();
            return listParticipante;
        } catch (HibernateException e){
            throw new ProjetoDAOException("Erro ao listar Participante(s) " + e);
        } finally {
            session.close();
        }
    }

    @Override
    public List listar(Participante participante) throws ProjetoDAOException {
        throw new UnsupportedOperationException("Erro ao listar Participante(s) ");
    }

    @Override
    public Participante procurar(Participante participante) throws ProjetoDAOException {
        throw new UnsupportedOperationException("Erro ao procurar Participante(s) ");
    }

    @Override
    public Participante procurar(String trim, String trim0) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

}